import { createRouter, createWebHistory } from 'vue-router'
import { loginInfoStore } from '@/stores/index.js'
import NotFound from '@/views/notFound/index.vue'
// 登录
import login from '@/views/setting/users/login.vue'


// 一级路由
import home from '@/views/home/home.vue'
// 主页
import index from '@/views/home/index.vue'
import text from '@/views/text/index.vue'

import charItm from '@/router/chart/itm.js'
import three1 from '@/router/three1/three.js'
import three2 from '@/router/three2/three.js'



// 自动注册导入路由
const moduleFileRoutes = import.meta.glob('@/router/**/index.js', { eager: true });
const moduleFileRoutesList = []
// for (const path in moduleFileRoutes) {
//   // const module = await moduleFileRoutes[path]();
//   // module.default.forEach(element => {
//   //   moduleFileRoutesList.push(element)
//   // });
// }

Object.values(moduleFileRoutes).forEach((key) => {
  //在添加任何东西都需要判断是否为空，if的简写
  const mod = key.default || []
  //Array.isArray判断是否为数组
  //因为路由不一定都是RouteRecordRaw[]，也可以RouteRecordRaw，对象。从而保证格式一致
  const modList = Array.isArray(mod) ? [...mod] : [mod]
  //添加到空的数组里面，...结构数组，把对象暴露出来
  moduleFileRoutesList.push(...modList)
})


const router = createRouter({
  history: createWebHistory(),
  routes: [
    {
      path: '/',
      name: 'login',
      component: login,
      meta: { title: '用户登录' }
    },
    {
      path: '/text',
      name: 'text',
      component: text,
      meta: { title: '用户登录' }
    },
    ...three1,
    ...three2,
    ...charItm,
    {
      path: '/home',
      name: 'home',
      component: home,
      redirect: '/index',
      children: [
        {
          path: '/index',
          component: index,
          name: 'index',
          meta: {
            keepAlive: true, // 是否缓存
            scollTopPosition: 0, // 滚动条位置
          },
        },
        ...moduleFileRoutesList
      ],
    },
    { path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound },
    // { path: '/aaaa', name: 'NotFound', component: NotFound },
    // {
    //     path: '/',
    //     name: 'login',
    //     component: login,
    //     meta: {title:'用户登录'}
    //   },
  ],
})

// 挂载路由守卫
router.beforeEach((to, from, next) => {

  // 设置标题
  document.title = to.meta.title ? to.meta.title : '来料检验'

  //   // 开启进度条
  //   // to将要访问的路径
  //   // from从哪个路径跳转而来
  //   // next是一个函数表示放行，调用方式（1）next()放行，（2）next('/login') 不放行强行跳转页面
  //   // 如果访问的是login页面则可以直接放行
  if (to.path === '/') return next()
  console.log(to.path)
  // 看板的话直接跳过验证
  if (to.path.startsWith("/chart/")) return next()
  if (to.path.startsWith("/text/")) return next()
  if (to.path.startsWith("/three")) return next()
  //   // 如果不是login页面则需要进行判断看有没有tokon,token是登录成功够保存到sessionSlotr里面的值
  //   // 获取token的值
  //   // const tokenStr = false // eslint-disable-line no-unused-vars
  //   // const tokenStr = window.sessionStorage.getItem('token') // eslint-disable-line no-unused-vars
  //   const tokenStr = localStorage.getItem("token") // eslint-disable-line no-unused-vars
  // 判断token值是否存在,不存在直接跳转到登录页面
  const { token } = loginInfoStore()
  // console.log(token)
  if (!token) {
    // Notify({ type: 'danger', message: '没有登录' })
    ElMessage.error('请先登录')
    return next('/')
  }

  // 存在世界放行
  next()
})

export default router
